package cn.lkk.samples.apis;

import java.lang.Math;

/**
 * java.lang.Math 的演示。
 * 该类包含了一些常用的数学运算函数与常量。
 */
public class MathAPI {

    public static String RESULT_PRINT_FORMAT = "%1$-8s = %2$s%n";

    public static void main(String[] args) {
        constant();
        System.out.println();
        function();
        random();
    }

    /**
     * 演示了Math类中的常用常量
     */
    public static void constant() {

        System.out.println("java.lang.Math中的部分常量");
        System.out.printf(RESULT_PRINT_FORMAT, "PI", Math.PI);
        System.out.printf(RESULT_PRINT_FORMAT, "E", Math.E);
    }

    /**
     * 演示Math类中的常用函数
     */
    public static void function() {

        System.out.println("java.lang.Math中的部分函数");

        // 求x的平方根
        double a = 0;
        double x = 4;
        double y = Math.sqrt(x); //求平方根
        System.out.printf(RESULT_PRINT_FORMAT, "sqrt(x)", y); //输出4

        //求x^a
        x = 5;
        a = 2;
        y = Math.pow(x, a); //求x^a
        System.out.printf(RESULT_PRINT_FORMAT, "x^a", y); //输出25

        //求log(x)，e为底
        x = Math.pow(Math.E, 2); //x=e^2
        y = Math.log(x);  //以e为底
        System.out.printf(RESULT_PRINT_FORMAT, "log(x)", y); //输出2.0

        //求log(x),10为底
        x = 100;
        y = Math.log10(x); //以10为底
        System.out.printf(RESULT_PRINT_FORMAT, "log10(x)", y); //输出2.0

        // 求三角函数
        double b = Math.PI / 3;
        System.out.printf(RESULT_PRINT_FORMAT, "sin(pi)", Math.sin(b));
        System.out.printf(RESULT_PRINT_FORMAT, "cos(pi)", Math.cos(b));
        System.out.printf(RESULT_PRINT_FORMAT, "tan(pi)", Math.tan(b));
    }

    /**
     * 演示Math.random()获得随机数
     */
    public static void random() {
        for (int i = 0; i < 10; ++i) {
            //获得一个0-1之间的数
            double value = Math.random();
            System.out.println(value);
        }
    }
}
